package rgil.repository.impl;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;

import rgil.pojo.Usuario;
import rgil.repository.UsuarioRepository;

public class UsuarioDaoImpl implements UsuarioRepository {

	private EntityManager entityManager;
	
	public void save(Usuario usuario) {
		if(usuario.getIdUsuario() > 0) {
			entityManager.merge(usuario);
		} else {
			entityManager.persist(usuario);
		}
	}

	public void delete(Usuario usuario) {
		entityManager.remove(load(usuario));
	}

	public Usuario load(Usuario usuario) {
		return entityManager.find(Usuario.class, usuario.getIdUsuario());
	}

	@SuppressWarnings("unchecked")
	public List<Usuario> listAll() {
		return entityManager.createQuery("from Usuario").getResultList();
	}

	public void setEntityManager(EntityManager entityManager) {
		this.entityManager = entityManager;
	}

	public Usuario findBydUsername(Usuario usuario) {
		Query q = entityManager.createQuery("from Usuario where username = :username");
		q.setParameter("username", usuario.getUsername());
		try {
			return (Usuario) q.getSingleResult();
		} catch (NoResultException no){
			return null;
		}
				
	}

}
